package com.yugao.fintech.antelope.shortlink.utils;

import com.github.yitter.idgen.YitIdHelper;
import com.google.common.hash.Hashing;

public class ShortLinkUtils {
    /**
     * 创建字符串code
     * @param str 原字符串
     * @return 转换后的整型
     */
    public static long createStringCode(String str) {
        return Hashing.murmur3_32_fixed().hashUnencodedChars(str).padToLong();
    }

    /**
     * 添加url随机前缀
     */
    public static String addUrlPrefix(String url) {
        return YitIdHelper.nextId() + "||" + url;
    }

    /**
     * 移除url前缀
     */
    public static String removeUrlPrefix(String url) {
        return url.substring(url.indexOf("||") + 2);
    }


    /**
     * 如果短链码重复, 则调用这个方法
     * url前缀的编号递增1
     * 如果还是用雪花算法, 则容易导致C端和B端不一致, 所以采用编号递增1的方式
     */
    public static String addUrlPrefixVersion(String url) {
        String srcUrl = url.substring(url.indexOf("||") + 2);
        long id = Long.parseLong(url.substring(0, url.indexOf("||")));
        return (id + 1) + "||" + srcUrl;
    }
}
